package com.nowcoder.community.controller;

import com.nowcoder.community.service.AlphaService;
import com.nowcoder.community.util.CommunityUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;

//@Controller
//@RequestMapping("/alpha")

public class AlphaController {
    @Autowired
    private AlphaService alphaService;
    @RequestMapping("/hello")
    @ResponseBody
    public String sayhello(){
        return "Hello Spring Boot.";
    }
    @RequestMapping("/data")
    @ResponseBody
    public String getDate(){
        return alphaService.find();
    }

    @RequestMapping("/http")
    public void http(HttpServletRequest req, HttpServletResponse resp){
        //获取请求数据
        System.out.println(req.getMethod());
        System.out.println(req.getServletPath());
        Enumeration<String> headerNames = req.getHeaderNames();
        while(headerNames.hasMoreElements())
        {
            String s = headerNames.nextElement();
            String value=req.getHeader(s);
            System.out.println(s+":"+value);

        }
        System.out.println(req.getParameter("code"));
        //response 返回响应数据
        resp.setContentType("text/html;charset=utf-8");
        try (PrintWriter writer = resp.getWriter();){

            writer.write("<h1>牛客网</h1>");

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
    //get请求
    ///student?current=1&limit=20

    @RequestMapping(path="/students",method= RequestMethod.GET)
    @ResponseBody

    public String getStudent(
            @RequestParam(name = "current",required = false,defaultValue = "1") int current,
            @RequestParam(name = "limit",required = false,defaultValue = "10") int limit){
        System.out.println(current);
        System.out.println(limit);

        return "some student";
    }

    //查询一个学生 /student/123
    @RequestMapping(path = "/student/{id}",method = RequestMethod.GET)
    @ResponseBody
    public String getStudent(@PathVariable("id")int id){
        System.out.println(id);
        return "a student";

    }
    //POST 请求
    @RequestMapping(path = "/student",method = RequestMethod.POST)
    @ResponseBody
    public String saveStudent(String name,int age){
        System.out.println(name);
        System.out.println(age);
        return "success";
    }
    //响应html数据
    @RequestMapping(path = "/teacher",method = RequestMethod.GET)
    public ModelAndView getTeacher(){
        ModelAndView mav=new ModelAndView();
        mav.addObject("name","ly");
        mav.addObject("age","30");
        mav.setViewName("/demo/view");
        return mav;

    }

    @RequestMapping(path = "/school",method = RequestMethod.GET)
    public String getSchool(Model model){
        model.addAttribute("name","东北大学");
        model.addAttribute("age","99");
        return "/demo/view";

    }
    //响应json数据（异步请求）
    //Java对象 -- json --js对象
    @RequestMapping(path = "/emp",method = RequestMethod.GET)
    @ResponseBody
    public Map<String,Object> getEmp(){
        Map<String,Object> emp=new HashMap<>();
        emp.put("name","lq");
        emp.put("age","23");
        emp.put("salary","10000");
        return emp;

    }
    @RequestMapping(path = "/emps",method = RequestMethod.GET)
    @ResponseBody
    public List<Map<String,Object>> getEmps(){
        List<Map<String,Object>>list=new ArrayList<>();
        Map<String,Object> emps1=new HashMap<>();
        emps1.put("name","lq");
        emps1.put("age","23");
        emps1.put("salary","10000");
        list.add(emps1);
        Map<String,Object> emps2=new HashMap<>();
        emps2.put("name","ly");
        emps2.put("age","23");
        emps2.put("salary","10000");
        list.add(emps2);
        Map<String,Object> emps3=new HashMap<>();
        emps3.put("name","ll");
        emps3.put("age","23");
        emps3.put("salary","10000");
        list.add(emps3);

        return list;

    }
    //cookie实例
    @RequestMapping(path = "/cookie/set",method = RequestMethod.GET)
    @ResponseBody
    public String setCookie(HttpServletResponse response){
       //创建cookie
       Cookie cookie=new Cookie("code", CommunityUtil.generateUUID());
       //设置生效范围
        cookie.setPath("/community/alpha");
        //设置生存时间
        cookie.setMaxAge(60*10);
        //发送cookie
        response.addCookie(cookie);
         return "set cookie";
    }
    @RequestMapping(path = "/cookie/get",method = RequestMethod.GET)
    @ResponseBody
    public String getCookie(@CookieValue("code") String code){
//        System.out.println(code);
        return "get cookie";
    }
    //session实例
    @RequestMapping(path = "/session/set",method = RequestMethod.GET)
    @ResponseBody
    public String setSession(HttpSession session){
        session.setAttribute("id",1);
        session.setAttribute("name" ,"Test");
        return "set session";

    }
    @RequestMapping(path = "/session/get",method = RequestMethod.GET)
    @ResponseBody
    public String getSession(HttpSession session){
        System.out.println(session.getAttribute("id"));
        System.out.println(session.getAttribute("name"));
        return "get session";
    }
    //ajax实例
    @RequestMapping(path = "/ajax",method = RequestMethod.POST)
    @ResponseBody
    public String testAjax(String name,int age){
        System.out.println(name);
        System.out.println(age);
        return CommunityUtil.getJSONString(0,"操作成功");
    }

}
